<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
	</head>
	<body>
		<!-- 有两种垃圾回收策略：
		标记清除：标记阶段即为所有活动对象做上标记，清除阶段则把没有标记（也就是非活动对象）销毁。
		引用计数：它把对象是否不再需要简化定义为对象有没有其他对象引用到它。如果没有引用指向该对象（引用计数为
		0），对象将被垃圾回收机制回收。 标记清除的缺点：
		内存碎片化，空闲内存块是不连续的，容易出现很多空闲内存块，还可能会出现分配所需内存过大的对象时找不到合适的块。
		分配速度慢，因为即便是使用 First-fit 策略，其操作仍是一个 O(n)
		的操作，最坏情况是每次都要遍历到最后，同时因为碎片化，大对象的分配效率会更慢。
		解决以上的缺点可以使用 **标记整理（Mark-Compact）算法
		**，标记结束后，标记整理算法会将活着的对象（即不需要清理的对象）向内存的一端移动，最后清理掉边界的内存
		引用计数的缺点：
		需要一个计数器，所占内存空间大，因为我们也不知道被引用数量的上限。
		解决不了循环引用导致的无法回收问题。 V8
		的垃圾回收机制也是基于标记清除算法，不过对其做了一些优化。
		针对新生区采用并行回收。 针对老生区采用增量标记与惰性回收。 -->
	</body>
</html>
